package com.lightboat.system.domain.request;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.lightboat.common.annotation.Excel;
import io.swagger.v3.oas.annotations.media.SchemaProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Map;

/**
 * 订单查询参数
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CrmOrderQueryRequest implements Serializable {
    /** 订单ID */
    @SchemaProperty(name = "订单ID")
    private Long orderId;

    /** 外部订单ID */
    @SchemaProperty(name = "外部订单ID")
    private String externalOrderId;

    /** 商铺ID */
    @SchemaProperty(name = "商铺ID")
    private String storeId;

    /** 订单类别（1系统 2复购） */
    @SchemaProperty(name = "订单类别（1系统 2复购）")
    @Excel(name = "订单类别", readConverterExp = "1=系统,2=复购")
    private Integer orderType;


    /** 客户ID */
    @SchemaProperty(name = "客户ID")
    private Long customerId;

    /** 订单编号 */
    @SchemaProperty(name = "订单编号")
    @Excel(name = "订单编号")
    private String orderNo;

    /** 销售置顶状态（1置顶 2正常） */
    @SchemaProperty(name = "销售置顶状态（1置顶 2正常）")
    private String topStatus;

    /** 客服置顶状态（1置顶 2正常） */
    @SchemaProperty(name = "客服置顶状态（1置顶 2正常）")
    @JsonProperty("cTopStatus")
    private String cTopStatus;

    /** 销售置顶类型 */
    @SchemaProperty(name = "销售置顶类型")
    private String topType;

    /** 客服置顶类型 */
    @SchemaProperty(name = "客服置顶类型")
    @JsonProperty("cTopType")
    private String cTopType;

    /** 类型CODE（用于区分角色） typeCode：1 客服 2 销售*/
    @SchemaProperty(name = "类型CODE（用于区分角色）")
    @Excel(name = "类型CODE")
    private String typeCode;

    /** 订单状态 */
    @SchemaProperty(name = "订单状态")
    private String orderStatus;

    /** 商品名称 */
    @SchemaProperty(name = "商品名称")
    private String productName;

    /** 收货人姓名 */
    @SchemaProperty(name = "收货人姓名")
    private String receiverName;

    /** 收货人手机号 */
    @SchemaProperty(name = "收货人手机号")
    private String receiverPhone;

    /** 业务员姓名 */
    @SchemaProperty(name = "业务员姓名")
    private String salesmanName;

    /** 物流状态（0 待发货 1已签收 2拒绝签收 3已发货） */
    @SchemaProperty(name = "物流状态（0 待发货 1已签收 2拒绝签收 3已发货）")
    private String logisticsStatus;

    /** 物流单号 */
    @SchemaProperty(name = "物流单号")
    private String logisticsNo;

    /** 跟进备注 */
    @SchemaProperty(name = "跟进备注")
    private String followRemark;

    /** 客户类别 */
    private String category;

    /** 分配状态 1未分配 2分配*/
    private Integer assignStatus;

    /**
     * 请求参数
     */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private Map<String, Object> params;

    /**
     * 搜索值
     */
    private String searchValue;
}
